<?php 

// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die();
 
jimport( 'joomla.application.component.model' );

class ShopModelCategories extends JModel
{
    
    var $_data;
 
    function _buildQuery($search)
    {
		
			if($search != '') // если задан параметр поиска категории, то ищем 
				$query = ' SELECT * ' . ' FROM #__shop_categories WHERE (locate("'.$search.'",name)>0) ORDER BY ordering ASC ';
			else // если нет , то просто получаем список всех категорий
				$query = ' SELECT * ' . ' FROM #__shop_categories ORDER BY ordering ASC ';
        return $query;
    }
 

    function getData() // получаем данные о категориях
    {
		
		$search = JRequest::getVar('search'); // получаем параметр поиска
        if (empty( $this->_data ))
        {
            $query = $this->_buildQuery($search); // создаем sql запрос
            $this->_data = $this->_getList( $query ); // посылаем его базе данных
		}
 
        return $this->_data; // возвращаем полученый список
    }
	
	function delete($id) // функция удаления категорий
	{	
		if (!$id || !is_array($id)) { 
            return false;
        }
		$query = 'SELECT * FROM #__shop_categories WHERE id IN ('.implode(',', $id).')';// проверка на правильность id
		$this->_db->setQuery($query);
		if ($this->_db->loadResult() != null) // если такая категория существует
		{			
			$query = 'DELETE FROM #__shop_categories WHERE id IN ('.implode(',', $id).')'; // удаляем из таблицы категорий
			$this->_db->setQuery($query);
			$this->_db->query();
			
			$query = 'SELECT * FROM #__shop_prod WHERE cat_id IN ('.implode(',', $id).')'; // получаем товары удаляемой категории
			$this->_db->setQuery($query);
			$goods = $this->_db->loadObjectList();
			foreach($goods as $good) // удаляем соответствующие им картинки
			{
				if($good->main_img != '')
					@ unlink(JPATH_SITE . '/components/com_shop/images' . DS . $good->image);
			}
			
			$query = 'DELETE FROM #__shop_prod WHERE cat_id IN ('.implode(',', $id).')';// удаляем товары соответствующей категории
			$this->_db->setQuery($query);
			$this->_db->query();
			return true;
		}
		return false;
	}
	function move($cid, $direction)
    {
        $table = &JTable::getInstance('categories', 'ShopTable');

        if (!$table->load($cid)) {
            $this->setError(JText::_('Проблема загрузки таблицы категории'));
            return false;
        }
        $ret = $table->move($direction);
        if( $ret != '1')  {
            $this->setError(JText::_('Невозможно переместить категорию'));
            return false;
        }

        return true;
    }

    function getStats ($cat_id) {

        $oStat = new stdClass();
        $sql = "SELECT (SELECT COUNT(id) FROM jos_shop_prod WHERE cat_id = '{$cat_id}')  as total,
(SELECT COUNT(id) FROM jos_shop_prod WHERE cat_id = '{$cat_id}' AND published = '1')  as publish,
(SELECT COUNT(id) FROM jos_shop_prod WHERE cat_id = '{$cat_id}' AND published = '0')  as non_publish,
(SELECT COUNT(id) FROM jos_shop_prod WHERE cat_id = '{$cat_id}' AND `sklad_sum` = '0')  as non_sklad";
        $this->_db->setQuery($sql);
        return $this->_db->loadObject();
    }

    function publishCat($cat_id) {
        $cat_id = (int)$cat_id;
        $sql = "UPDATE jos_shop_prod SET published = '1' WHERE cat_id = '{$cat_id}'";
        $this->_db->setQuery($sql);
        $this->_db->query();
        return true;
    }
	
}
?>